﻿using System.Collections.ObjectModel;

namespace Renci.Data.Interop.OpenGIS.Gml
{
    /// <remarks/>
    [System.Xml.Serialization.XmlIncludeAttribute(typeof(EnvelopeWithTimePeriodType))]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://www.opengis.net/gml")]
    [System.Xml.Serialization.XmlRootAttribute("Envelope", Namespace = "http://www.opengis.net/gml", IsNullable = false)]
    public class EnvelopeType : ISRSReferenceGroup
    {
        private Collection<object> _items = new Collection<object>();
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("coord", Type = typeof(CoordType))]
        [System.Xml.Serialization.XmlElementAttribute("coordinates", Type = typeof(CoordinatesType))]
        [System.Xml.Serialization.XmlElementAttribute("lowerCorner", Type = typeof(LowerCornerPositionType))]
        [System.Xml.Serialization.XmlElementAttribute("pos", Type = typeof(DirectPositionType))]
        [System.Xml.Serialization.XmlElementAttribute("upperCorner", Type = typeof(UpperCornerPositionType))]
        public Collection<object> Items
        {
            get
            {
                return this._items;
            }
        }

        #region ISRSReferenceGroup Members

        /// <summary>
        /// Gets or sets the reference points to a CRS instance of gml:CoordinateReferenceSystemType 
        /// (see coordinateReferenceSystems.xsd). For well known references it is not required that the CRS description exists at the 
        /// location the URI points to. If no srsName attribute is given, the CRS must be specified as part of the larger context this 
        /// geometry element is part of, e.g. a geometric element like point, curve, etc. It is expected that this attribute will be specified 
        /// at the direct position level only in rare cases.
        /// </summary>
        [System.Xml.Serialization.XmlAttributeAttribute("srsName", DataType = "anyURI")]
        public string SrsName { get; set; }

        /// <summary>
        /// Gets or sets the length of coordinate sequence (the number of entries in the list). 
        /// This dimension is specified by the coordinate reference system. 
        /// When the <see cref="SrsName"/> property is empty, this property shall be empty.
        /// </summary>
        [System.Xml.Serialization.XmlAttributeAttribute("srsDimension")]
        public string SrsDimension { get; set; }

        #endregion

        #region ISRSInformationGroup Members

        /// <summary>
        /// Ordered list of labels for all the axes of this CRS. The gml:axisAbbrev value should be used for these axis 
        /// labels, after spaces and forbiddden characters are removed. When the srsName attribute is included, this attribute is optional. 
        /// When the srsName attribute is omitted, this attribute shall also be omitted.
        /// </summary>
        [System.Xml.Serialization.XmlAttributeAttribute("axisLabels")]
        public string AxisLabels { get; set; }

        /// <summary>
        /// Ordered list of unit of measure (uom) labels for all the axes of this CRS. The value of the string in the 
        /// gml:catalogSymbol should be used for this uom labels, after spaces and forbiddden characters are removed. When the 
        /// axisLabels attribute is included, this attribute shall also be included. When the axisLabels attribute is omitted, this attribute 
        /// shall also be omitted.
        /// </summary>
        [System.Xml.Serialization.XmlAttributeAttribute("uomLabels")]
        public string UomLabels { get; set; }

        #endregion
    }
}
